package web.beans;

import User.bo.UserBo;
import User.model.User;
import util.Context;
import util.Mail;
import util.Sender;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.ValidatorException;
import java.util.Random;

/**
 * Created by Новак on 24.11.2014.
 */
public class RegUser {
    private String login;
    private String pass;
    private String email;
    private String code;
    private String codeUser;
    private boolean sent=false;
    UserBo userBo;
//    private static Sender tlsSender = new Sender("vanches.novak@gmail.com", "1234567890_");

    @PostConstruct
    private void init(){
        userBo=(UserBo) Context.getAppContext().getBean("userBo");
    }

    private String generateCode(){
        Random rnd =new Random();
        return ""+100 + rnd.nextInt(100000 - 100 + 1);
    }
    public void sendCode(){
        code=generateCode();
       // tlsSender.send("Регистрация", "Ваш проверочный код : "+code, email, email);

        Mail mail=(Mail)Context.getAppContext().getBean("Mail");
        mail.sendMail("Регистрация", email, email,"Ваш проверочный код : "+code);

        sent=true;
    }
    public String registration(){

            User users = new User(login, pass, email);
        userBo.save(users);

    return "authorization";
    }


    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public String getPass() {
        return pass;
    }

    public void setPass(String pass) {
        this.pass = pass;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getCodeUser() {
        return codeUser;
    }

    public void setCodeUser(String codeUser) {
        this.codeUser = codeUser;
    }

    public boolean isSent() {
        return sent;
    }

    public void setSent(boolean sent) {
        this.sent = sent;
    }
    public void validateEmail(FacesContext context,
                              UIComponent toValidate,
                              Object value) throws ValidatorException {
        String emailStr = (String) value;
        if (-1 == emailStr.indexOf("@")) {
            FacesMessage message = new FacesMessage("Неверный @mail адрес!");
            throw new ValidatorException(message);
        }
    }
    public void verificationСode(FacesContext context,
                              UIComponent toValidate,
                              Object value) throws ValidatorException {
        String codeUs = (String) value;
        if (!code.equals(codeUs)) {
            FacesMessage message = new FacesMessage("Проверочное число введено неверно!");
            throw new ValidatorException(message);
        }
    }

    public void checkLogin(FacesContext context,
                              UIComponent toValidate,
                              Object value) throws ValidatorException {
        String login = (String) value;

        if (userBo.checkLogin(login)) {
            FacesMessage message = new FacesMessage("Пользователь с таким логином уже зарегистрирован" );
            throw new ValidatorException(message);
        }
    }}
